#include "ControlDataSharedMemory.h"

size_t ControlDataSharedMemory::getMemorySize()
{
	// Son todos enteros, no tengo problema en realizar un sizeof de 
	// la estructura
	return sizeof(ControlData);
}

void ControlDataSharedMemory::read(ControlData* aControlData) const
{
	ControlData* aux = (ControlData*) this->data;
	
	aControlData->capacidadSala = aux->capacidadSala;
	aControlData->camionEnSala = aux->camionEnSala;
	aControlData->cantidadDePersonas = aux->cantidadDePersonas;
	aControlData->cantidadPersonasEnCamion = aux->cantidadPersonasEnCamion;
	
	for (int i = 0; i < CANT_DOORS; i++) {
		aControlData->puertaCamionBloqueada[i] = aux->puertaCamionBloqueada[i];
	}
	
	copiarBuffer(&aControlData->camionesBloqueados, &aux->camionesBloqueados);
}

void ControlDataSharedMemory::write(const ControlData* aControlData)
{
	ControlData* aux = (ControlData*) this->data;

	aux->capacidadSala = aControlData->capacidadSala;
	aux->camionEnSala = aControlData->camionEnSala;
	aux->cantidadDePersonas = aControlData->cantidadDePersonas;
	aux->cantidadPersonasEnCamion = aControlData->cantidadPersonasEnCamion;
	
	for (int i = 0; i < CANT_DOORS; i++) {
		aux->puertaCamionBloqueada[i] = aControlData->puertaCamionBloqueada[i];
	}
	
	copiarBuffer(&aux->camionesBloqueados, &aControlData->camionesBloqueados);	
}

